home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / database / dg53.zip / SAMPLES.DAT < prev    next >
Text File  |  1997-06-07  |  98KB  |  1,931 lines

  1. rem do example 0
  2. @echo off
  3. cls
  4. if %1PP == PP goto hlp
  5. if %1 == all goto dem1
  6. if %1 == dem1 goto dem1
  7. if %1 == dem2 goto dem2
  8. if %1 == dem3 goto dem3
  9. if %1 == dem4 goto dem4
  10. if %1 == dem5 goto dem5
  11. if %1 == dem6 goto dem6
  12. if %1 == list goto list
  13. echo ########  Invalid argument
  14. goto hlp
  15. rem
  16. *
  17. text example 1
  18.    +------------------------------------------------------------------------+
  19.    |                                                                        |
  20.    |       +----------------+                                               |
  21.    |       | DG DEMO INTRO  |                                               |
  22.    |       +----------------+                                               |
  23.    |                                                                        |
  24.    |       The examples given here are not all inclusive, but should        |
  25.    |       give you a feel for dg.                                          |
  26.    |                                                                        |
  27.    |       Most folks will get all they need from dem1 through dem4.        |
  28.    |       The remainder address less commonly needed capabilities.         |
  29.    |                                                                        |
  30.    |                                                                        |
  31.    +------------------------------------------------------------------------+
  32. *
  33. rem do example 1
  34. :dem1
  35. @echo off
  36. cls
  37. dg -ekp "text example 1" samples.dat  
  38. pause
  39. *
  40. text example 2
  41.    +------------------------------------------------------------------------+
  42.    |                                                                        |
  43.    |       +----------------+                                               |
  44.    |       | DG DEMO PART 1 |                                               |
  45.    |       +----------------+                                               |
  46.    |         --  simple searches                                            |
  47.    |         --  case sensitive searches                              (-C)  |
  48.    |         --  inverted sense: records that DON'T have the phrase   (-v)  |
  49.    |         --  phrases with spaces need to be quoted                      |
  50.    |         --  considering phrases that crossover the end of a line (-x)  |
  51.    |         --  "highlighting" why the record was a hit              (-H)  |
  52.    |         --  just a bit about secondary delimiters                (-h)  |
  53.    |         --  using the GREP mode                                  (-G)  |
  54.    |         --  getting a record count for a file (status)           (-s)  |
  55.    |         --  searching multiple files with the dgw batch file     (dgw) |
  56.    |                                                                        |
  57.    +------------------------------------------------------------------------+
  58. *
  59. rem do example 2
  60. @echo off
  61. cls
  62. dg -ekp "text example 2" samples.dat  
  63. pause
  64. *
  65. text example 3
  66.    +------------------------------------------------------------------------+
  67.    |                                                                        |
  68.    | lincoln.sam is a SAMple file containing a small set of excerpts from   |
  69.    | Lincoln's speeches. The "records" are separated by "*" delimiters.     |
  70.    | Later, in dem4, we'll look at paragraph mode-- a mode for files        |
  71.    | that have no "*" delimiters.                                           |
  72.    |                                                                        |
  73.    | Right now, let's look for the famous quotation mentioning malice.      |
  74.    | We can use the dg command with no arguments at all:                    |
  75.    |                                                                        |
  76.    |        dg  malice lincoln.sam                                          |
  77.    |                                                                        |
  78.    +------------------------------------------------------------------------+
  79. *
  80. rem do example 3
  81. @echo off
  82. cls
  83. dg -ekp "text example 3" samples.dat  
  84. pause
  85.        dg  malice lincoln.sam
  86. echo ########  ====================================================
  87. echo ########  That was pretty simple: the record was separated by
  88. echo ########  asterisk delimiters. There was only one record
  89. echo ########  containing the word malice.
  90. echo ########  ====================================================
  91. pause
  92. *
  93. text example 4
  94.    +------------------------------------------------------------------------+
  95.    |                                                                        |
  96.    | Let's look this time for references to "God" in the lincoln sample     |
  97.    | file.  I'll capitalize the search term to show that the default        |
  98.    | search is case-insensitive.                                            |
  99.    |                                                                        |
  100.    |        dg  GOD lincoln.sam                                             |
  101.    |                                                                        |
  102.    +------------------------------------------------------------------------+
  103. *
  104. rem do example 4
  105. @echo off
  106. cls
  107. dg -ekp "text example 4" samples.dat  
  108. pause
  109.        dg  GOD lincoln.sam
  110. echo ########  ====================================================
  111. echo ########  This time there were 2 matching records.
  112. echo ########  ====================================================
  113. pause
  114. *
  115. text example 5
  116.    +------------------------------------------------------------------------+
  117.    |                                                                        |
  118.    | Let's do the same thing, but use the -C option, forcing a case         |
  119.    | sensitive search.                                                      |
  120.    |                                                                        |
  121.    |        dg -C GOD lincoln.sam                                           |
  122.    |                                                                        |
  123.    +------------------------------------------------------------------------+
  124. *
  125. rem do example 5
  126. @echo off
  127. cls
  128. dg -ekp "text example 5" samples.dat  
  129. pause
  130.        dg  -C GOD lincoln.sam
  131. echo ########  ====================================================
  132. echo ########  This time there is only 1 matching record.
  133. echo ########  ====================================================
  134. pause
  135. *
  136. text example 6
  137.    +------------------------------------------------------------------------+
  138.    |                                                                        |
  139.    | Inverted sense:                                                        |
  140.    |                                                                        |
  141.    | We can also find records that do NOT have a reference to "God".        |
  142.    | The -v "invert sense" option works with most, but not all, other       |
  143.    | options.  You'll get an error message if you use -v with an            |
  144.    | incompatible option.                                                   |
  145.    |                                                                        |
  146.    |        dg  -v GOD lincoln.sam                                          |
  147.    |                                                                        |
  148.    |        (In a real mode, we'd use "dg  -v GOD lincoln.sam > catchfil"   |
  149.    |         since we know the results will overflow the screen.            |
  150.    |         Then the file catchfil would hold our results. )               |
  151.    |                                                                        |
  152.    +------------------------------------------------------------------------+
  153. *
  154. rem do example 6
  155. @echo off
  156. cls
  157. dg -ekp "text example 6" samples.dat  
  158. pause
  159.        dg  -v GOD lincoln.sam
  160. echo ########  ====================================================
  161. echo ########  This time we printed the 11 example records
  162. echo ########  that do NOT have the name GOD.
  163. echo ########  If the command had used redirection to a file,
  164. echo ########  that file would now hold the 11 finds in a form
  165. echo ########  ready for more dg work, as desired.
  166. echo ########  ====================================================
  167. pause
  168. *
  169. text example 7
  170.    +------------------------------------------------------------------------+
  171.    |                                                                        |
  172.    | If we were looking for a phrase, we'd need to put the phrase in        |
  173.    | quotes (double quotes for DOS, single for UNIX):                       |
  174.    |                                                                        |
  175.    |        dg  "same God" lincoln.sam                                      |
  176.    |                                                                        |
  177.    +------------------------------------------------------------------------+
  178. *
  179. rem do example 7
  180. @echo off
  181. cls
  182. dg -ekp "text example 7" samples.dat  
  183. pause
  184.        dg  "same God" lincoln.sam
  185. echo ########  ====================================================
  186. echo ########  This was a pretty simple phrase search.
  187. echo ########  But phrases in text may cross over a line break.
  188. echo ########  The search command, as written, would not have found:
  189. echo ########  .....................................the same
  190. echo ########  God ...................................
  191. echo ########  ====================================================
  192. pause
  193. *
  194. text example 8
  195.    +------------------------------------------------------------------------+
  196.    |                                                                        |
  197.    | Let's try looking for a longer phrase:                                 |
  198.    |                                                                        |
  199.    |        dg  "finish the work we are in" lincoln.sam                     |
  200.    |                                                                        |
  201.    +------------------------------------------------------------------------+
  202. *
  203. rem do example 8
  204. @echo off
  205. cls
  206. dg -ekp "text example 8" samples.dat  
  207. pause
  208.        dg  "finish the work we are in" lincoln.sam
  209. echo ########  ====================================================
  210. echo ########  No finds. The phrase was not found on any one line.
  211. echo ########  See the next example.
  212. echo ########  ====================================================
  213. pause
  214. *
  215. text example 9
  216.    +------------------------------------------------------------------------+
  217.    |                                                                        |
  218.    | Let's try looking for that longer phrase using the -x "crossover"      |
  219.    | option:                                                                |
  220.    |                                                                        |
  221.    |        dg -x  "finish the work we are in" lincoln.sam                  |
  222.    |                                                                        |
  223.    +------------------------------------------------------------------------+
  224. *
  225. rem do example 9
  226. @echo off
  227. cls
  228. dg -ekp "text example 9" samples.dat  
  229. pause
  230.        dg  -x "finish the work we are in" lincoln.sam
  231. echo ########  ====================================================
  232. echo ########  This time we find the phrase.
  233. echo ########  The -x option will only cross over (xover) one line
  234. echo ########  break. It is best when used with the -T option
  235. echo ########  i.e. dg -xT
  236. echo ########  This will ensure that any excess spaces at the end
  237. echo ########  or start of a line are ignored.
  238. echo ########  ====================================================
  239. pause
  240. *
  241. text example 10
  242.    +------------------------------------------------------------------------+
  243.    |                                                                        |
  244.    | Sometimes the records we find will be relatively large, and it may     |
  245.    | not be easy to spot why the record was a "hit."                        |
  246.    |                                                                        |
  247.    | We can use the -H "highlight" option to help spot it, and pipe the     |
  248.    | result to the DOS "more" program to halt the output at each            |
  249.    | screenful:                                                             |
  250.    |                                                                        |
  251.    |        dg  -H wrong lincoln.sam | more                                 |
  252.    |                                                                        |
  253.    +------------------------------------------------------------------------+
  254. *
  255. rem do example 10
  256. @echo off
  257. cls
  258. dg -ekp "text example 10" samples.dat  
  259. pause
  260.        dg  -H wrong lincoln.sam | more
  261. echo ########  ====================================================
  262. echo ########  Note that only the first hit in each record is
  263. echo ########  highlighted, and always at the beginning of the line.
  264. echo ########  ====================================================
  265. pause
  266. *
  267. text example 11
  268.    +------------------------------------------------------------------------+
  269.    |                                                                        |
  270.    | Note that in the example lincoln text, records contain many            |
  271.    | paragraphs in a single record (records separated by asterisks).        |
  272.    |                                                                        |
  273.    | If each "record" contained many paragraphs, we might like to           |
  274.    | "subdivide" the record, getting only the paragraphs of interest.       |
  275.    |                                                                        |
  276.    | The -h option allows designating a secondary delimiter inside the      |
  277.    | main records.  Use -h alone (as the LAST option) or -hh (with other    |
  278.    | options) and a blank line will be considered the secondary delimiter.  |
  279.    |                                                                        |
  280.    | For example:                                                           |
  281.    |                                                                        |
  282.    |         dg -h wrong lincoln.sam | more                                 |
  283.    |                                                                        |
  284.    +------------------------------------------------------------------------+
  285. *
  286. rem do example 11
  287. @echo off
  288. cls
  289. dg -ekp "text example 11" samples.dat  
  290. pause
  291.        dg -h wrong lincoln.sam | more
  292. echo ########  ====================================================
  293. echo ########  Note that the first, i.e., key, line of the primary
  294. echo ########  record is printed along with a warning that what
  295. echo ########  follows is a partial record only.
  296. echo ########  ====================================================
  297. pause
  298. *
  299. text example 12
  300.    +------------------------------------------------------------------------+
  301.    |                                                                        |
  302.    | The -G option makes dg behave like grep rather than dg.  Record        |
  303.    | delimiters are ignored, and only lines with the defined searchterm     |
  304.    | are shown.  Use it only if you don't have the real grep program,       |
  305.    | as the latter has more power, especially in the use of regular         |
  306.    | expressions.  Note: a real grep defaults to case-sensitive, while      |
  307.    | dg will default to case-insensitive.                                   |
  308.    |                                                                        |
  309.    | For example:                                                           |
  310.    |                                                                        |
  311.    |         dg -G god lincoln.sam                                          |
  312.    |                                                                        |
  313.    +------------------------------------------------------------------------+
  314. *
  315. rem do example 12
  316. @echo off
  317. cls
  318. dg -ekp "text example 12" samples.dat  
  319. pause
  320.        dg -G god lincoln.sam 
  321. echo ########  ====================================================
  322. echo ########  Just the lines are shown, with no indication of
  323. echo ########  which records they are from.
  324. echo ########  .
  325. echo ########  The -G option should work well along with
  326. echo ########  the following options: wucCvTefNFm and ^$ usage,
  327. echo ########  but a real grep is preferable.
  328. echo ########  ====================================================
  329. pause
  330. *
  331. text example 13
  332.    +------------------------------------------------------------------------+
  333.    |                                                                        |
  334.    | Before we leave the example lincoln text, lets try the -s status       |
  335.    | option.                                                                |
  336.    |                                                                        |
  337.    | The -s option alone reports only the number of records.  Use with      |
  338.    | -V (verbose) to get a bit more information:                            |
  339.    |                                                                        |
  340.    |         dg -Vs lincoln.sam                                             |
  341.    |                                                                        |
  342.    +------------------------------------------------------------------------+
  343. *
  344. rem do example 13
  345. @echo off
  346. cls
  347. dg -ekp "text example 13" samples.dat  
  348. pause
  349.  
  350.        dg -Vs lincoln.sam
  351. echo ########  ====================================================
  352. echo ########  Null record are those with only line endings between
  353. echo ########  successive record delimiters.
  354. echo ########  Null -- mt -- keylines are legal, but unexpected
  355. echo ########  empty lines at the start of a record.
  356. echo ########  ====================================================
  357. pause
  358. *
  359. text example 14
  360.    +------------------------------------------------------------------------+
  361.    |                                                                        |
  362.    | One final set of examples-- how to use dg to search across             |
  363.    | multiple files. dg, by itself, will not recognize wildcards in         |
  364.    | the filename on the command line.  Use the dgw batch file when         |
  365.    | you want dg to search across multiple files. We'll run the             |
  366.    | following:                                                             |
  367.    |                                                                        |
  368.    |         dgw -o politics *.sam                                          |
  369.    |                                                                        |
  370.    | to look for the term "politics" in all the sample files.  When         |
  371.    | using the batch file, dg arguments may be included. At least           |
  372.    | one MUST be included.  The -o argument is a "do-nothing" argument      |
  373.    | that acts as a placeholder.                                            |
  374.    |                                                                        |
  375.    +------------------------------------------------------------------------+
  376. *
  377. rem do example 14
  378. @echo off
  379. cls
  380. dg -ekp "text example 14" samples.dat  
  381. pause
  382.  
  383.        call dgw -o politics *.sam
  384. echo ########  ====================================================
  385. echo ########  Two records were found. Each happens to come from
  386. echo ########  a different sample file. Results are always
  387. echo ########  redirected to a temporary file called ztempx.
  388. echo ########  Change the batch file if you want other behavior.
  389. echo ########  ====================================================
  390. pause
  391. *
  392. text example 15
  393.    +------------------------------------------------------------------------+
  394.    |                                                                        |
  395.    | If you want the output to show which searched files contained the      |
  396.    | hits, use the -qV option combination:                                  |
  397.    |                                                                        |
  398.    |         dgw -qV politics *.sam                                         |
  399.    |                                                                        |
  400.    +------------------------------------------------------------------------+
  401. *
  402. rem do example 15
  403. @echo off
  404. cls
  405. dg -ekp "text example 15" samples.dat  
  406. pause
  407.  
  408.        call dgw -qV politics *.sam
  409. echo ########  ====================================================
  410. echo ########  If you've written the output to, say, tempfile,
  411. echo ########  you may, after inspecting the results, purge
  412. echo ########  the advisories with:
  413. echo ########  dg -v "Searching file:" tempfile
  414. echo ########  ====================================================
  415. pause
  416. *
  417. text example 16
  418.    +------------------------------------------------------------------------+
  419.    |                                                                        |
  420.    | Note that the dgw results are always written to a file named ztempx,   |
  421.    | in the current working directory.                                      |
  422.    |                                                                        |
  423.    | The batch file will complain if you try to search ALL (*.* or *)       |
  424.    | files in the current working directory since that would include        |
  425.    | the output ztempx file.                                                |
  426.    |                                                                        |
  427.    | If you must search ALL files in a directory (* or *.*), do so from     |
  428.    | a higher level directory.  dgw -o srchterm asubdir/*.*                 |
  429.    | will work fine.                                                        |
  430.    |                                                                        |
  431.    | Here's an example of the kind of complaint you'll get if you           |
  432.    | forget:                                                                |
  433.    |                                                                        |
  434.    |             dgw -o politics *.*                                        |
  435.    |                                                                        |
  436.    +------------------------------------------------------------------------+
  437. *
  438. rem do example 16
  439. @echo off
  440. cls
  441. dg -ekp "text example 16" samples.dat  
  442. pause
  443.  
  444.        call dgw -o politics *.*
  445. echo ########  ====================================================
  446. echo ########  If you use UNIX and convert the DOS batch to a script,
  447. echo ########  a few well-placed else's will do what the meager
  448. echo ########  DOS language cannot.
  449. echo ########  ====================================================
  450. pause
  451. if %1 == dem1 goto end
  452. *
  453. text example 17
  454.    +------------------------------------------------------------------------+
  455.    |                                                                        |
  456.    |       +----------------+                                               |
  457.    |       | DG DEMO PART 2 |                                               |
  458.    |       +----------------+                                               |
  459.    |                                                                        |
  460.    |         --  strings vs. words                                          |
  461.    |         --  limiting searches to words                   (-w)          |
  462.    |         --  limiting searches to strings/words                         |
  463.    |                at the beginning or end of lines          ( ^  $ )      |
  464.    |                                                                        |
  465.    |                                                                        |
  466.    +------------------------------------------------------------------------+
  467. *
  468. rem do example 17
  469. @echo off
  470. :dem2
  471. cls
  472. dg -ekp "text example 17" samples.dat  
  473. pause
  474. *
  475. text example 18
  476.    +------------------------------------------------------------------------+
  477.    |                                                                        |
  478.    | A "string" is a chain of characters. "rat" is a string three           |
  479.    | characters long.  Looking for the string "rat" will find the word      |
  480.    | "rat", and the word "rather".                                          |
  481.    |                                                                        |
  482.    | The dg program does not implement full "regular expressions" as        |
  483.    | that term is used in UNIX.                                             |
  484.    |                                                                        |
  485.    | It does support the unix conventions "^" and "$" to designate          |
  486.    | strings at beginning and end of lines.  It also supports a -w option   |
  487.    | to limit finds to "words" so that a -w search for "rat" will not turn  |
  488.    | up records with "rather".                                              |
  489.    |                                                                        |
  490.    | The next few demo's will walk through these options against a very     |
  491.    | contrived sample "inventory" file.                                     |
  492.    |                                                                        |
  493.    | First lets do the straightforward phrase search:                       |
  494.    |                                                                        |
  495.    |        dg rat inventry.sam                                             |
  496.    |                                                                        |
  497.    +------------------------------------------------------------------------+
  498. *
  499. rem do example 18
  500. cls
  501. dg -ekp "text example 18" samples.dat | more
  502. pause
  503.  
  504.        cls
  505.        dg rat inventry.sam
  506. echo ########  ====================================================
  507. echo ########  The result found all records with "rat"
  508. echo ########  including some we might not have wanted.
  509. echo ########  ====================================================
  510. pause
  511. *
  512. text example 19
  513.    +------------------------------------------------------------------------+
  514.    |                                                                        |
  515.    | Now lets find records with lines that BEGIN with the string "rat":     |
  516.    |                                                                        |
  517.    |        dg ^rat inventry.sam                                            |
  518.    |                                                                        |
  519.    +------------------------------------------------------------------------+
  520. *
  521. rem do example 19
  522. cls
  523. dg -ekp "text example 19" samples.dat | more
  524. echo ########  .
  525. echo ########  .
  526. pause
  527.  
  528.        cls
  529.        dg ^rat inventry.sam
  530. echo ########  ====================================================
  531. echo ########  The result shows only records having lines
  532. echo ########  that begin with "rat".
  533. echo ########  ====================================================
  534. pause
  535. *
  536. text example 20
  537.    +------------------------------------------------------------------------+
  538.    |                                                                        |
  539.    | Now records with lines that END with the string "rat":                 |
  540.    |                                                                        |
  541.    |        dg rat$ inventry.sam                                            |
  542.    |                                                                        |
  543.    +------------------------------------------------------------------------+
  544. *
  545. rem do example 20
  546. cls
  547. dg -ekp "text example 20" samples.dat | more
  548. echo ########  .
  549. echo ########  .
  550. pause
  551.  
  552.        cls
  553.        dg rat$ inventry.sam
  554. echo ########  ====================================================
  555. echo ########  The result shows only records having lines
  556. echo ########  that end with "rat".
  557. echo ########  ====================================================
  558. pause
  559. *
  560. text example 21
  561.    +------------------------------------------------------------------------+
  562.    |                                                                        |
  563.    | Now records with lines that BEGIN and END with the string "rat":       |
  564.    |                                                                        |
  565.    |        dg ^rat$ inventry.sam                                           |
  566.    |                                                                        |
  567.    +------------------------------------------------------------------------+
  568. *
  569. rem do example 21
  570. cls
  571. dg -ekp "text example 21" samples.dat | more
  572. echo ########  .
  573. echo ########  .
  574. pause
  575.  
  576.        cls
  577.        dg ^rat$ inventry.sam
  578. echo ########  ====================================================
  579. echo ########  The result shows only records having lines
  580. echo ########  that begin AND end with "rat".
  581. echo ########  .
  582. echo ########  Note that this is NOT quite standard UNIX usage.
  583. echo ########  The ^$ will not limit finds to lines having only
  584. echo ########  the exact enclosed string and nothing more.
  585. echo ########  Use the -e (exact line match) to do that.
  586. echo ########  .
  587. echo ########  The example ^rat$ search literally finds records
  588. echo ########  that begin and end with the string, which may
  589. echo ########  or may not be what you want.
  590. echo ########  ====================================================
  591.  
  592.  
  593. pause
  594. *
  595. text example 22
  596.    +------------------------------------------------------------------------+
  597.    |                                                                        |
  598.    | Use the -w option to limit finds to "rat" as a word.                   |
  599.    |                                                                        |
  600.    |        dg -w rat inventry.sam                                          |
  601.    |                                                                        |
  602.    +------------------------------------------------------------------------+
  603. *
  604. rem do example 22
  605. cls
  606. dg -ekp "text example 22" samples.dat | more
  607. echo ########  .
  608. echo ########  .
  609. pause
  610.  
  611.        cls
  612.        dg -w rat inventry.sam
  613. echo ########  ====================================================
  614. echo ########  The result shows only records having lines
  615. echo ########  that with the string as a word.
  616. echo ########  ====================================================
  617.  
  618. pause
  619. *
  620. text example 23
  621.    +------------------------------------------------------------------------+
  622.    |                                                                        |
  623.    | Use the -w option and the ^ to limit finds to "rat" as a word at the   |
  624.    | beginning of a line.                                                   |
  625.    |                                                                        |
  626.    |        dg -w ^rat inventry.sam                                         |
  627.    |                                                                        |
  628.    +------------------------------------------------------------------------+
  629. *
  630. rem do example 23
  631. cls
  632. dg -ekp "text example 23" samples.dat | more
  633. echo ########  .
  634. echo ########  .
  635. pause
  636.  
  637.        cls
  638.        dg -w ^rat inventry.sam
  639. echo ########  ====================================================
  640. echo ########  The result shows only records having lines that have
  641. echo ########  the string as a word at the beginning of a line.
  642. echo ########  ====================================================
  643.  
  644. pause
  645. *
  646. text example 24
  647.    +------------------------------------------------------------------------+
  648.    |                                                                        |
  649.    | Use the -w option and the $ to limit finds to "rat" as a word at the   |
  650.    | end of a line.                                                         |
  651.    |                                                                        |
  652.    |        dg -w rat$ inventry.sam                                         |
  653.    |                                                                        |
  654.    +------------------------------------------------------------------------+
  655. *
  656. rem do example 24
  657. cls
  658. dg -ekp "text example 24" samples.dat | more
  659. echo ########  .
  660. echo ########  .
  661. pause
  662.  
  663.        cls
  664.        dg -w rat$ inventry.sam
  665. echo ########  ====================================================
  666. echo ########  The result shows only records having lines that
  667. echo ########  have the string as a word at the end of a line.
  668. echo ########  ====================================================
  669.  
  670. pause
  671. *
  672. text example 25
  673.    +------------------------------------------------------------------------+
  674.    |                                                                        |
  675.    | In the unlikely event that you want to find a string that actually     |
  676.    | starts with the character "^" or ends with "$", use a backslash ("\")  |
  677.    | in the search string:                                                  |
  678.    |                                                                        |
  679.    |        dg "\^rat" inventry.sam                                         |
  680.    |                                                                        |
  681.    +------------------------------------------------------------------------+
  682. *
  683. rem do example 25
  684. cls
  685. dg -ekp "text example 25" samples.dat | more
  686. echo ########  .
  687. echo ########  .
  688. pause
  689.  
  690.        cls
  691.        dg "\^rat" inventry.sam
  692. echo ########  ====================================================
  693. echo ########  The result shows only records having lines
  694. echo ########  that with a literal ^rat string.
  695. echo ########  Usage for a rat$ string would be similar.
  696. echo ########  .
  697. echo ########  Note: Unlike standard UNIX, this usage of
  698. echo ########  the \ term is limited to the ^ and $ literals.
  699. echo ########  ====================================================
  700.  
  701. pause
  702. if %1 == dem2 goto end
  703. *
  704. text example 26
  705.    +------------------------------------------------------------------------+
  706.    |                                                                        |
  707.    |       +----------------+                                               |
  708.    |       | DG DEMO PART 3 |                                               |
  709.    |       +----------------+                                               |
  710.    |                                                                        |
  711.    |         --  using keylines                                             |
  712.    |             ---- limiting search to keylines               (-k)        |
  713.    |             ---- limiting output to keylines               (-K)        |
  714.    |                                                                        |
  715.    |         --  multiple string searches                                   |
  716.    |             ---- multiple terms on a line                  (-m)        |
  717.    |             ---- multiple terms anywhere in a record       (-M)        |
  718.    |                                                                        |
  719.    |         --  using a file of searchterms                    (-f)        |
  720.    |                                                                        |
  721.    |         --  getting keyline output plus selected           (-y)        |
  722.    |             other lines from a record.                                 |
  723.    |                                                                        |
  724.    |         --  sending each record "hit" to a separate file   (-D)        |
  725.    |                                                                        |
  726.    |                                                                        |
  727.    +------------------------------------------------------------------------+
  728. *
  729. rem do example 26
  730. :dem3
  731. @echo off
  732. cls
  733. dg -ekp "text example 26" samples.dat  
  734. pause
  735. *
  736. text example 27
  737.    +------------------------------------------------------------------------+
  738.    |                                                                        |
  739.    | Free form files with useful keylines:                                  |
  740.    |                                                                        |
  741.    | The file minerals.sam is an example of a free form set of reference    |
  742.    | or study notes.  Each record gives a generally unstructured glob of    |
  743.    | information about a particular mineral.                                |
  744.    |                                                                        |
  745.    | The KEY (first) line, however, does have a little structure, giving a  |
  746.    | primary mineral name, possibly some alternate names, a fluorescence    |
  747.    | flag (FLFL) where appropriate, a general type (oxide, sulfide, etc.),  |
  748.    | and the chemical formula.                                              |
  749.    |                                                                        |
  750.    | For example:                                                           |
  751.    |                                                                        |
  752.    | axinite         FLFLRED+        //borosilicate Ca2(Mn,Fe)Al2BSi4O15(OH)|
  753.    |                                                                        |
  754.    | The file provides one example of how keyline searches (-k) can be put  |
  755.    | to good use.                                                           |
  756.    |                                                                        |
  757.    |                                                                        |
  758.    +------------------------------------------------------------------------+
  759. *
  760. rem do example 27
  761. cls
  762. dg -ekp "text example 27" samples.dat  
  763. pause
  764. *
  765. text example 28
  766.    +------------------------------------------------------------------------+
  767.    |                                                                        |
  768.    | For example, lets try this case-sensitive search (-C) for iron (Fe)    |
  769.    | minerals without using the -k option. (We'll throw in the -V verbose   |
  770.    | option to show what that does as well.)                                |
  771.    |                                                                        |
  772.    |        dg -VC Fe minerals.sam | more                                   |
  773.    |                                                                        |
  774.    | Note that many records will NOT have an Fe in the keyline, which       |
  775.    | means they are not REALLY what we are looking for.                     |
  776.    |                                                                        |
  777.    +------------------------------------------------------------------------+
  778. *
  779. rem do example 28
  780. cls
  781. dg -ekp "text example 28" samples.dat  
  782. pause
  783.        dg -VC Fe minerals.sam | more
  784. echo ########  ====================================================
  785. echo ########  Naturally we got more than we wanted.
  786. echo ########  .... Many records about non-Fe minerals,
  787. echo ########  that happened to mention Fe somewhere in the record.
  788. echo ########  ====================================================
  789. pause
  790. *
  791. text example 29
  792.    +------------------------------------------------------------------------+
  793.    |                                                                        |
  794.    | Now try the search with -k to limit searching to the 1st keyline       |
  795.    | only.                                                                  |
  796.    |                                                                        |
  797.    |        dg -VCk Fe minerals.sam  | more                                 |
  798.    |                                                                        |
  799.    |                                                                        |
  800.    +------------------------------------------------------------------------+
  801. *
  802. rem do example 29
  803. cls
  804. dg -ekp "text example 29" samples.dat  
  805. pause
  806.        dg -VCk Fe minerals.sam | more
  807. echo ########  ====================================================
  808. echo ########  This is what we wanted.
  809. echo ########  ====================================================
  810. pause
  811. *
  812. text example 30
  813.    +------------------------------------------------------------------------+
  814.    |                                                                        |
  815.    | We could do the same search, adding a -K3 option.  Altogether, this    |
  816.    | would mean: search only the first keyline (-k) but show only the       |
  817.    | first 3 (key)lines of each record:                                     |
  818.    |                                                                        |
  819.    |        dg -VCkK3 Fe minerals.sam  | more                               |
  820.    |                                                                        |
  821.    |                                                                        |
  822.    +------------------------------------------------------------------------+
  823. *
  824. rem do example 30
  825. cls
  826. dg -ekp "text example 30" samples.dat  
  827. pause
  828.        dg -VCkK3 Fe minerals.sam | more
  829. echo ########  ====================================================
  830. echo ########  The value of the -k and -K options depends entirely
  831. echo ########  on whether you want to design your record-keeping to
  832. echo ########  take advantage of these features.
  833. echo ########  .
  834. echo ########  If your file structure has the most needed info in
  835. echo ########  the first few lines, this option is especially
  836. echo ########  useful for quickie summaries.
  837. echo ########  ====================================================
  838. pause
  839. *
  840. text example 31
  841.    +------------------------------------------------------------------------+
  842.    |                                                                        |
  843.    | As an aside, you may have noted that the verbose option we've been     |
  844.    | using provides a count of hits.  To get *only* a count of hits, use    |
  845.    | the -c option instead:                                                 |
  846.    |                                                                        |
  847.    |        dg -cC Fe minerals.sam                                          |
  848.    |                                                                        |
  849.    +------------------------------------------------------------------------+
  850. *
  851. rem do example 31
  852. cls
  853. dg -ekp "text example 31" samples.dat  
  854. pause
  855.        dg -cC Fe minerals.sam
  856. echo ########  ====================================================
  857. echo ########  Just a count of how many records were hits.
  858. echo ########  ====================================================
  859. pause
  860. *
  861. text example 32
  862.    +------------------------------------------------------------------------+
  863.    |                                                                        |
  864.    | Searching for multiple terms on a line:                                |
  865.    |                                                                        |
  866.    | Suppose we wanted to find minerals with keylines having 2 desired      |
  867.    | terms "Fe" and "sulfide".   We use the -m (multiple) option and TWO    |
  868.    | searchterms where we normally have only one.                           |
  869.    |                                                                        |
  870.    |        dg -Ckm Fe sulfide minerals.sam  | more                         |
  871.    |                                                                        |
  872.    +------------------------------------------------------------------------+
  873. *
  874. rem do example 32
  875. cls
  876. dg -ekp "text example 32" samples.dat  
  877. pause
  878.        dg -Ckm Fe sulfide minerals.sam | more
  879. echo ########  ====================================================
  880. echo ########  The -m multiple option defaults to -m2
  881. echo ########  meaning 2 searchterms on the command line
  882. echo ########  following the options and prior to the filename.
  883. echo ########  ====================================================
  884. pause
  885. *
  886. text example 33
  887.    +------------------------------------------------------------------------+
  888.    | Now lets try 3 desired terms: Fe and sulfide and As on the keyline:    |
  889.    |                                                                        |
  890.    |        dg -Ckm3 Fe sulfide As minerals.sam                             |
  891.    |                                                                        |
  892.    |                                                                        |
  893.    +------------------------------------------------------------------------+
  894. *
  895. rem do example 33
  896. cls
  897. dg -ekp "text example 33" samples.dat  
  898. pause
  899.        dg -Ckm3 Fe sulfide As minerals.sam
  900. echo ########  ====================================================
  901. echo ########  The -m3 multiple option expects 3 terms to follow.
  902. echo ########  You get a hit only if all 3 terms are found on one line.
  903. echo ########  ====================================================
  904. pause
  905. *
  906. text example 34
  907.    +------------------------------------------------------------------------+
  908.    |                                                                        |
  909.    | The -m option looks for multiple searchterms on a single line.         |
  910.    |                                                                        |
  911.    | Use -M to look for multiple searchterms record-wide.                   |
  912.    |                                                                        |
  913.    | For example, to find records containing the terms "silicate" and       |
  914.    | "phosphor" somewhere in the record:                                    |
  915.    |                                                                        |
  916.    |        dg -M silicate phosphor minerals.sam                            |
  917.    |                                                                        |
  918.    +------------------------------------------------------------------------+
  919. *
  920. rem do example 34
  921. cls
  922. dg -ekp "text example 34" samples.dat  
  923. pause
  924.        dg -M silicate phosphor minerals.sam | more
  925. echo ########  ====================================================
  926. echo ########  There are many applications when this can be
  927. echo ########  very valuable.
  928. echo ########  .
  929. echo ########  As with -m, the -M defaults to 2 terms
  930. echo ########  but -M3 to -M9 are supported.
  931. echo ########  ====================================================
  932.  
  933. pause
  934.  
  935. *
  936. text example 35
  937.    +------------------------------------------------------------------------+
  938.    |                                                                        |
  939.    | The -m and -M options look for multiple terms in the sense of an       |
  940.    | "AND" sort of search.  When we want to do an OR search, the best bet   |
  941.    | is to use the -f option, putting our searchterms into a file.          |
  942.    |                                                                        |
  943.    | For example, many of the mineral records have a fluorescence color in  |
  944.    | the key line.  Suppose we wanted a list of minerals that fluoresce     |
  945.    | red, pink, orange, or yellow.  Put those 4 words in a file, e.g.,      |
  946.    | wanted.sam- with one phrase (in this case, one word) per line..  and   |
  947.    | then:                                                                  |
  948.    |                                                                        |
  949.    |        dg -kKpf wanted.sam minerals.sam                                |
  950.    |                                                                        |
  951.    | will deliver the first keyline (-K print 1 keyline only) of all        |
  952.    | records that match, in the keyline (-k), one of the terms in the       |
  953.    | searchfile named wanted.sam  The -p (plain) option inhibits printing   |
  954.    | stars on output.                                                       |
  955.    |                                                                        |
  956.    +------------------------------------------------------------------------+
  957. *
  958. rem do example 35
  959. cls
  960. dg -ekp "text example 35" samples.dat  
  961. echo ########  .
  962. echo ########  .
  963. pause
  964.        dg -kKpf wanted.sam minerals.sam
  965. echo ########  ====================================================
  966. echo ########  The ability to specify multiple searchterms
  967. echo ########  in a file can be very powerful, and is particularly
  968. echo ########  satisfying if you have somehow convinced some other
  969. echo ########  software to automatically generate the file of terms
  970. echo ########  to search for.
  971. echo ########  ====================================================
  972.  
  973. pause
  974.  
  975. *
  976. text example 36
  977.    +------------------------------------------------------------------------+
  978.    |                                                                        |
  979.    | The -y option looks like a -m multiple terms search, but it is         |
  980.    | quite different.                                                       |
  981.    |                                                                        |
  982.    | For example, many of the mineral records have a line starting with "H" |
  983.    | for "Hardness" or SG for Specific Gravity.  It is often, but not       |
  984.    | always, the second and/or third line in a record.  But its a lazily    |
  985.    | organized file and we can't depend on that. In any case, suppose we    |
  986.    | want oxide records, and their Hardness and Specific Gravity data only. |
  987.    | The following use of the -y option will do the job.                    |
  988.    |                                                                        |
  989.    |        dg -yCkKm3r oxide ^H ^SG minerals.sam                           |
  990.    |                                                                        |
  991.    | This will deliver the first keyline (-K print 1 keyline only) of all   |
  992.    | records that match, in the keyline (-k), the single term "oxide" and   |
  993.    | then print any remaining lines in those records that begin with an "H" |
  994.    | or an "SG".  The -r option gives better visual separation of records.  |
  995.    |                                                                        |
  996.    +------------------------------------------------------------------------+
  997. *
  998. rem do example 36
  999. cls
  1000. dg -ekp "text example 36" samples.dat  
  1001. echo ########  .
  1002. echo ########  .
  1003. pause
  1004.        dg -yCkKm3r oxide ^H ^SG minerals.sam | more
  1005. echo ########  ====================================================
  1006. echo ########  Note that a -m3 was needed in the options to allow
  1007. echo ########  for the 3 multiple search terms, but the -y
  1008. echo ########  completely changes how the search terms are
  1009. echo ########  interpreted. The first term is now the _sole_ search
  1010. echo ########  term for a record hit, and the remaining are
  1011. echo ########  used to pick out lines from the rest of the record.
  1012. echo ########  .
  1013. echo ########  This can be a powerful capability, depending on
  1014. echo ########  the nature of your records.
  1015. echo ########  .
  1016. echo ########  Use it with records that are long, but have good
  1017. echo ########  keyword lines and any kind of "tagging" in the
  1018. echo ########  rest of the record lines.
  1019. echo ########  ====================================================
  1020.  
  1021. pause
  1022.  
  1023. *
  1024. text example 37
  1025.    +------------------------------------------------------------------------+
  1026.    |                                                                        |
  1027.    | This is a good place to demo the -D option, which outputs              |
  1028.    | (Distributes) each record found to a separate file.   This is          |
  1029.    | exceptionally useful when you plan to process each of your             |
  1030.    | finds with another program of some sort.                               |
  1031.    |                                                                        |
  1032.    | Follow the -D with the desired output file prefix. For DOS, this must  |
  1033.    | be limited to 4 characters or less, and the output limit will be 9999  |
  1034.    | files (even with a 1-3 character prefix).                              |
  1035.    |                                                                        |
  1036.    | The command:                                                           |
  1037.    |                                                                        |
  1038.    |        dg -kfDhots wanted.sam minerals.sam                             |
  1039.    |                                                                        |
  1040.    | will Deliver the whole record (no -K this time) of all records that    |
  1041.    | match, in the keyline (-k limits search to 1st keyline), one of the    |
  1042.    | terms in the searchfile named wanted.sam--  and place each find in     |
  1043.    | separate file, e.g., hots0001, hots0002, etc.                          |
  1044.    |                                                                        |
  1045.    | wanted.sam holds the "hot" colors: red, yellow, orange, pink           |
  1046.    |                                                                        |
  1047.    +------------------------------------------------------------------------+
  1048. *
  1049. rem do example 37
  1050. cls
  1051. dg -ekp "text example 37" samples.dat  
  1052. pause
  1053.        dg -kfDhots wanted.sam minerals.sam
  1054. echo ########  ====================================================
  1055. echo ########  You will appreciate this capability if your goal
  1056. echo ########  is to select specific cases from a master file
  1057. echo ########  to be submitted to some common test procedure
  1058. echo ########  or other processing.
  1059. echo ########  .
  1060. echo ########  .
  1061. echo ########  Lets look at one of the resulting files, hots0007:
  1062. echo ########  ====================================================
  1063.        pause
  1064.        type hots0007
  1065. echo ########  ====================================================
  1066.  
  1067. pause
  1068. if %1 == dem3 goto end
  1069. *
  1070. text example 38
  1071.    +------------------------------------------------------------------------+
  1072.    |                                                                        |
  1073.    |       +----------------+                                               |
  1074.    |       | DG DEMO PART 4 |                                               |
  1075.    |       +----------------+                                               |
  1076.    |                                                                        |
  1077.    |         --  paragraph mode                                (-dd)        |
  1078.    |         ----  keylines in paragraph mode                               |
  1079.    |                                                                        |
  1080.    |         --  using the -F field option                     (-F)         |
  1081.    |                                                                        |
  1082.    |                                                                        |
  1083.    +------------------------------------------------------------------------+
  1084. *
  1085. rem do example 38
  1086. :dem4
  1087. @echo off
  1088. cls
  1089. dg -ekp "text example 38" samples.dat  
  1090. pause
  1091. *
  1092. text example 39
  1093.    +------------------------------------------------------------------------+
  1094.    |                                                                        |
  1095.    | Let's try some examples using the file dgops.sam. This file is a       |
  1096.    | cutout of the options section of the dgman file.  No stars (*) are     |
  1097.    | in the file, but the file has good separation of data into paragraphs  |
  1098.    | with BLANK LINES as delimiters, so we don't need any stars. We can     |
  1099.    | use "paragraph mode" with the -dd option.                              |
  1100.    |                                                                        |
  1101.    | The presence of the option letter on the first line of each paragraph  |
  1102.    | is a perfect setup for the keyline search feature.  Try the            |
  1103.    | following:                                                             |
  1104.    |                                                                        |
  1105.    |                                                                        |
  1106.    | To look up help for the -f option:                                     |
  1107.    |                                                                        |
  1108.    |         dg -Cddk -f dgops.sam                                          |
  1109.    |                                                                        |
  1110.    |                                                                        |
  1111.    +------------------------------------------------------------------------+
  1112. *
  1113. rem do example 39
  1114. cls
  1115. dg -ekp "text example 39" samples.dat  
  1116. pause
  1117.        dg -Cddk -f dgops.sam
  1118. echo ########  ====================================================
  1119. echo ########  The result is shown above.
  1120. echo ########  The -dd sets paragraph mode... empty lines are
  1121. echo ########  delimiters. The -k limits searching to the
  1122. echo ########  first keyline. There is no -K option,
  1123. echo ########  so the whole record is shown. The -C
  1124. echo ########  made sure we got info on the -f option,
  1125. echo ########  and not on the -F option.
  1126. echo ########  ====================================================
  1127. pause
  1128. *
  1129. text example 40
  1130.    +------------------------------------------------------------------------+
  1131.    | Another similar example, looking for info on the -d option:            |
  1132.    |                                                                        |
  1133.    |         dg -ddk -d dgops.sam                                           |
  1134.    |                                                                        |
  1135.    +------------------------------------------------------------------------+
  1136. *
  1137. rem do example 40
  1138. cls
  1139. dg -ekp "text example 40" samples.dat  
  1140. pause
  1141.        dg -ddk -d dgops.sam
  1142. echo ########  ====================================================
  1143. echo ########  The result is shown above.
  1144. echo ########  .
  1145. echo ########  The -d option can also change the delimiter, e.g.,
  1146. echo ########  a search option of -d^ will work with files that
  1147. echo ########  use the hat symbol instead of the asterisk.
  1148. echo ########  ====================================================
  1149.  
  1150. pause
  1151. *
  1152. text example 41
  1153.    +------------------------------------------------------------------------+
  1154.    | Another similar example, but with an important twist:                  |
  1155.    |                                                                        |
  1156.    |         dg -ddk \^\$ dgops.sam | more                                  |
  1157.    |                                                                        |
  1158.    | We're looking for a paragraph that literally has "^$" in the           |
  1159.    | first keyline.                                                         |
  1160.    |                                                                        |
  1161.    +------------------------------------------------------------------------+
  1162. *
  1163. rem do example 41
  1164. cls
  1165. dg -ekp "text example 41" samples.dat  
  1166. pause
  1167.        dg -ddk \^\$ dgops.sam | more
  1168. echo ########  ====================================================
  1169. echo ########  The twist is that we see several paragraphs, not one.
  1170. echo ########  I cheated-- the dgops.sam file has spaces typed on
  1171. echo ########  what look like empty lines separating the text above.
  1172.        pause
  1173. echo ########  Paragraph mode breaks on true empty lines-- not on
  1174. echo ########  any old lines with whitespace.. BUT - use -ddT to
  1175. echo ########  Trim lead/trail spaces and whitespace lines will
  1176. echo ########  behave as if they were truly empty.
  1177. echo ########  ====================================================
  1178.  
  1179. pause
  1180. *
  1181. text example 42
  1182.    +------------------------------------------------------------------------+
  1183.    |                                                                        |
  1184.    | Search now for info about the option that addresses highlighting.      |
  1185.    | We use no -k option, so that whole records are searched:               |
  1186.    |                                                                        |
  1187.    |         dg -dd highlight dgops.sam                                     |
  1188.    |                                                                        |
  1189.    |                                                                        |
  1190.    +------------------------------------------------------------------------+
  1191. *
  1192. rem do example 42
  1193. cls
  1194. dg -ekp "text example 42" samples.dat  
  1195. pause
  1196.        dg -dd highlight dgops.sam
  1197. echo ########  ====================================================
  1198. echo ########  The result is shown above
  1199. echo ########  ====================================================
  1200. pause
  1201. *
  1202. text example 43
  1203.    +------------------------------------------------------------------------+
  1204.    |                                                                        |
  1205.    | Search again now for info about the option that addresses              |
  1206.    | highlighting. We still use no -k option, so whole records are          |
  1207.    | searched, but add a -K2 option so that we print out only the first 2   |
  1208.    | lines of a hit:                                                        |
  1209.    |                                                                        |
  1210.    |         dg -ddK2 highlight dgops.sam                                   |
  1211.    |                                                                        |
  1212.    |                                                                        |
  1213.    +------------------------------------------------------------------------+
  1214. *
  1215. rem do example 43
  1216. cls
  1217. dg -ekp "text example 43" samples.dat  
  1218. pause
  1219.        dg -ddK2 highlight dgops.sam
  1220. echo ########  ====================================================
  1221. echo ########  The result is shown above.
  1222. echo ########  Note the entirely valid case where the displayed
  1223. echo ########  result is missing the searchterm. Remember, we
  1224. echo ########  searched the whole record, but limited output to
  1225. echo ########  the first 2 keylines.
  1226. echo ########  ====================================================
  1227. pause
  1228. *
  1229. text example 44
  1230.    +------------------------------------------------------------------------+
  1231.    | There's another way to skin the cat with any files that provide key    |
  1232.    | terms at specific "fields" in various lines. In this sense of the      |
  1233.    | word "field", I mean the sense used in awk-- where each term or word   |
  1234.    | in a line, separated from others by whitespace, is a separate          |
  1235.    | field.        Thus in a line such as:                                  |
  1236.    |                                                                        |
  1237.    |         cats, lions, tigers, leopards, ocelot                          |
  1238.    |                                                                        |
  1239.    | field 1 is "cats," and field 2 is "lions," etc.                        |
  1240.    |                                                                        |
  1241.    +------------------------------------------------------------------------+
  1242. *
  1243. rem do example 44
  1244. :testing
  1245. cls
  1246. dg -ekp "text example 44" samples.dat  
  1247. pause
  1248. *
  1249. text example 45
  1250.    +------------------------------------------------------------------------+
  1251.    |                                                                        |
  1252.    | In the dgman file, and most man files, the major options are           |
  1253.    | described in paragraphs that have the option letter as the first       |
  1254.    | "field" in a line. We can force the search to look for the desired     |
  1255.    | string only in field 1:                                                |
  1256.    |                                                                        |
  1257.    | The search:                                                            |
  1258.    |                                                                        |
  1259.    |         dg -ddCF1 -c dgops.sam                                         |
  1260.    |                                                                        |
  1261.    | with the dd specifying blank lines as record delimiters, the -C for    |
  1262.    | case-sensitive searching, and the -F1 specifying that we want to       |
  1263.    | search only the first field in all lines.  The -c, in this case, is    |
  1264.    | the searchterm.                                                        |
  1265.    |                                                                        |
  1266.    |                                                                        |
  1267.    +------------------------------------------------------------------------+
  1268. *
  1269. rem do example 45
  1270. :testing
  1271. cls
  1272. dg -ekp "text example 45" samples.dat  
  1273. pause
  1274.        dg -ddCF1 -c dgops.sam 
  1275. echo ########  ====================================================
  1276. echo ########  The F1 search works well here only because we know
  1277. echo ########  this file has the dashed option letters in the first
  1278. echo ########  field of some line in the record.
  1279. echo ########  .
  1280.  
  1281. echo ########  Remember that the -F option without a numeric
  1282. echo ########  means to limit the search to the LAST field of
  1283. echo ########  the lines, regardless of whether that
  1284. echo ########  is the first, second, etc.
  1285. echo ########  .
  1286. echo ########  .
  1287. echo ########  The value of this option depends entirely on how
  1288. echo ########  your file data is arranged. Remember to use
  1289. echo ########  the -L option with -F if you start getting
  1290. echo ########  unwarranted complaints. See manual.
  1291. echo ########  .
  1292. echo ########  .
  1293. echo ########  ====================================================
  1294.  
  1295. pause
  1296. *
  1297. text example 46
  1298.    +------------------------------------------------------------------------+
  1299.    |                                                                        |
  1300.    | By now, you may be getting a little boggle-eyed at the number of       |
  1301.    | possible options.                                                      |
  1302.    |                                                                        |
  1303.    | How can you remember them ?                                            |
  1304.    |                                                                        |
  1305.    | Well, I can't.  When I need to do a job once, I dig through my own     |
  1306.    | help to figure out what the option codes are.                          |
  1307.    |                                                                        |
  1308.    | If I'm expecting to do that job again, the command, with its option    |
  1309.    | letters, goes into a batch file or unix alias.                         |
  1310.    |                                                                        |
  1311.    | Also-- some notes and keywords and the name of the batch file goes     |
  1312.    | into a general help file (a dg-searchable one, of course) so that      |
  1313.    | I can remember what worked.                                            |
  1314.    |                                                                        |
  1315.    +------------------------------------------------------------------------+
  1316. *
  1317. rem do example 46
  1318. cls
  1319. dg -ekp "text example 46" samples.dat  
  1320. pause
  1321. if %1 == dem4 goto end
  1322. *
  1323. text example 47
  1324.    +------------------------------------------------------------------------+
  1325.    |                                                                        |
  1326.    |       +----------------------------------------+                       |
  1327.    |       | DG DEMO PART 5 --  ADVANCED USERS ONLY |                       |
  1328.    |       +----------------------------------------+                       |
  1329.    |                                                                        |
  1330.    |         --  Getting records by number                 (-n#  -n#,3)     |
  1331.    |                                                                        |
  1332.    |         --  Getting only the first hit                (-Q)             |
  1333.    |                                                                        |
  1334.    |         --  Records with labeled-lines                                 |
  1335.    |         ----  Appending new labeled-lines             (-a, -aj)        |
  1336.    |         ----  Appending to keylines                   (-A, -Aj)        |
  1337.    |         ----  Appending record numbers to keylines    (-aJ -Aj)        |
  1338.    |                                                                        |
  1339.    +------------------------------------------------------------------------+
  1340. *
  1341. rem do example 47
  1342. :dem5
  1343. @echo off
  1344. cls
  1345. dg -ekp "text example 47" samples.dat  
  1346. pause
  1347. *
  1348. text example 48
  1349.    +------------------------------------------------------------------------+
  1350.    | Now we'll look at how dg can be used with a more structured kind of    |
  1351.    | file.                                                                  |
  1352.    |                                                                        |
  1353.    | tasks.sam is a sample file containing software trouble reports,        |
  1354.    | perhaps extracted from a database into a working ASCII file.           |
  1355.    |                                                                        |
  1356.    | Its design is VERY different from the almost unstructured files we've  |
  1357.    | used as examples up to now. Many lines are "labeled" lines.            |
  1358.    |                                                                        |
  1359.    | Let's start by looking only at record 1, and by the way, introduce     |
  1360.    | the -n option.                                                         |
  1361.    |                                                                        |
  1362.    |        dg  -n1 tasks.sam > task1.tem                                   |
  1363.    |                                                                        |
  1364.    | We'll run the command, redirecting the result to a new file, and then  |
  1365.    | type the new file to the screen.                                       |
  1366.    |                                                                        |
  1367.    |                                                                        |
  1368.    +------------------------------------------------------------------------+
  1369. *
  1370. rem do example 48
  1371. cls
  1372. dg -ekp "text example 48" samples.dat  
  1373. pause
  1374.        dg  -n1 tasks.sam > task1.tem
  1375.        type  task1.tem
  1376. echo ########  ====================================================
  1377. echo ########  The result- the first record- is in file task1.tem
  1378. echo ########  which has been TYPE'd to the screen above.
  1379. echo ########  .
  1380. echo ########  Note how this file is designed to have
  1381. echo ########  very structured line names for major
  1382. echo ########  elements of each record.
  1383. echo ########  ====================================================
  1384.  
  1385. pause
  1386. *
  1387. text example 49
  1388.    +------------------------------------------------------------------------+
  1389.    |                                                                        |
  1390.    | By the way, the -n option can retrieve a series of records.            |
  1391.    | For example, lets look at records 3 to 5 in tasks.sam:                 |
  1392.    |                                                                        |
  1393.    |        dg  -n3,5 tasks.sam | more                                      |
  1394.    |                                                                        |
  1395.    +------------------------------------------------------------------------+
  1396. *
  1397. rem do example 49
  1398. @echo off
  1399. cls
  1400. dg -ekp "text example 49" samples.dat  
  1401. pause
  1402.        dg  -n3,5 tasks.sam
  1403. echo ########  ====================================================
  1404. echo ########  The 3rd, 4th and 5th records were printed.
  1405. echo ########  ====================================================
  1406.  
  1407. pause
  1408. *
  1409. text example 50
  1410.    +------------------------------------------------------------------------+
  1411.    |                                                                        |
  1412.    | Notice that for this file structure, there is a unique record name     |
  1413.    | on line 1.  If you are wanting to find a record by name, use the       |
  1414.    | -Q "quit-on-1-find" option. That might save a lot of search time       |
  1415.    | in a really large file. With -k as well, search time is minimized.     |
  1416.    |                                                                        |
  1417.    |        dg -kQ RYKL0.0-0005 tasks.sam                                   |
  1418.    |                                                                        |
  1419.    +------------------------------------------------------------------------+
  1420. *
  1421. rem do example 50
  1422. cls
  1423. dg -ekp "text example 50" samples.dat  
  1424. pause
  1425.        dg -kQ RYKL0.0-0005 tasks.sam 
  1426. echo ########  ====================================================
  1427. echo ########  Use -Q only if you are sure there will be
  1428. echo ########  only one matching record.
  1429. echo ########  ====================================================
  1430. pause
  1431. *
  1432. text example 51
  1433.    +------------------------------------------------------------------------+
  1434.    |                                                                        |
  1435.    | Now, let's create a temporary subfile of all OPEN tasks.               |
  1436.    |                                                                        |
  1437.    | Because of this file's structure, we can use the -m (multiples, same   |
  1438.    | line) search, using a LINE NAME as ONE of the terms-- and knowing      |
  1439.    | (because we designed the structure that way) that OPEN items are so    |
  1440.    | marked in the "STATE----:" line.                                       |
  1441.    |                                                                        |
  1442.    |        dg -m state-- open tasks.sam > openrecs.tem                     |
  1443.    |                                                                        |
  1444.    +------------------------------------------------------------------------+
  1445. *
  1446. rem do example 51
  1447. cls
  1448. dg -ekp "text example 51" samples.dat  
  1449. pause
  1450.        dg -m state-- open tasks.sam > openrecs.tem
  1451.        type openrecs.tem
  1452. echo ########  ====================================================
  1453. echo ########  The result is in file openrecs.tem
  1454. echo ########  which has been TYPE'd to the screen above.
  1455. echo ########  .
  1456. echo ########  We now have a temporary subfile of OPEN tasks
  1457. echo ########  that we can further process.
  1458. echo ########  ====================================================
  1459. pause
  1460. *
  1461. text example 52
  1462.    +------------------------------------------------------------------------+
  1463.    |                                                                        |
  1464.    | Now further dig into the subfile of open tasks to create a temporary   |
  1465.    | file of all open tasks assigned to an engineer named Gorgon:           |
  1466.    |                                                                        |
  1467.    |        dg -m assgn_to-- gorgon openrecs.tem > gorgon.tem               |
  1468.    |                                                                        |
  1469.    |                                                                        |
  1470.    +------------------------------------------------------------------------+
  1471. *
  1472. rem do example 52
  1473. cls
  1474. dg -ekp "text example 52" samples.dat  
  1475. pause
  1476.        dg -m assgn_to-- gorgon openrecs.tem > gorgon.tem
  1477.        type gorgon.tem
  1478. echo ########  ====================================================
  1479. echo ########  The result is in file gorgon.tem
  1480. echo ########  which has been TYPE'd to the screen above.
  1481. echo ########  With an appropriate batch file, we could
  1482. echo ########  easily create separate listings of each engineer's
  1483. echo ########  open tasks.
  1484. echo ########  ====================================================
  1485. pause
  1486. *
  1487. text example 53
  1488.    +------------------------------------------------------------------------+
  1489.    | The -K option can be very useful with this kind of file. To get        |
  1490.    | a quick on-screen summary of task numbers and titles for any trouble   |
  1491.    | reports mentioning whales:                                             |
  1492.    |                                                                        |
  1493.    |        dg -K2 whal tasks.sam                                           |
  1494.    |                                                                        |
  1495.    |                                                                        |
  1496.    +------------------------------------------------------------------------+
  1497. *
  1498. rem do example 53
  1499. cls
  1500. dg -ekp "text example 53" samples.dat  
  1501. pause
  1502.        dg -K2 whal tasks.sam
  1503. echo ########  ====================================================
  1504. echo ########  The result is shown above
  1505. echo ########  ====================================================
  1506. pause
  1507. *
  1508. text example 54
  1509.    +------------------------------------------------------------------------+
  1510.    |                                                                        |
  1511.    | For a quick list of all tasks, without the star separators:            |
  1512.    |                                                                        |
  1513.    |        dg -Kpl tasks.sam                                               |
  1514.    |                                                                        |
  1515.    |                                                                        |
  1516.    +------------------------------------------------------------------------+
  1517. *
  1518. rem do example 54
  1519. cls
  1520. dg -ekp "text example 54" samples.dat  
  1521. pause
  1522.        dg -Kpl tasks.sam
  1523. echo ########  ====================================================
  1524. echo ########  The result is shown above.
  1525. echo ########  .
  1526. echo ########  I find the -Kpl option combination is one I use
  1527. echo ########  frequently on certain kinds of files to review
  1528. echo ########  the contents.
  1529. echo ########  ====================================================
  1530. pause
  1531. *
  1532. text example 55
  1533.    +------------------------------------------------------------------------+
  1534.    |                                                                        |
  1535.    | Expanding a structured file:                                           |
  1536.    |                                                                        |
  1537.    | This is a good place to demo one way to use the -a append option.      |
  1538.    |                                                                        |
  1539.    | With a file of the sort that has labeled lines, we may want to         |
  1540.    | augment part or all of the file with a new line type.                  |
  1541.    |                                                                        |
  1542.    | Suppose, for example, we wanted to add a line for the planned          |
  1543.    | completion date.                                                       |
  1544.    |                                                                        |
  1545.    | Create a file called "zzapfile" and enter the desired text on a        |
  1546.    | single line. ("zzapfile" is a hardcoded filename with special meaning  |
  1547.    | to dg)                                                                 |
  1548.    |                                                                        |
  1549.    | This tutorial batch file will do that for you with the command:        |
  1550.    |                                                                        |
  1551.    |        echo FINISH_DATE-: TBD > zzapfile                               |
  1552.    +------------------------------------------------------------------------+
  1553. *
  1554. rem do example 55
  1555. cls
  1556. dg -ekp "text example 55" samples.dat  
  1557. echo ########  .
  1558. echo ########  .
  1559. pause
  1560. *
  1561. text example 56
  1562.    +------------------------------------------------------------------------+
  1563.    |                                                                        |
  1564.    | Once zzapfile has been created, we use:                                |
  1565.    |                                                                        |
  1566.    |        dg -al tasks.sam > taskplus.tem                                 |
  1567.    |                                                                        |
  1568.    | Note that NO searchterm is given, but the -l option is provided.  This |
  1569.    | means to do the append for aLL records, so we can get away without     |
  1570.    | having to specify some searchterm common to all records.               |
  1571.    |                                                                        |
  1572.    +------------------------------------------------------------------------+
  1573. *
  1574. rem do example 56
  1575. cls
  1576. dg -ekp "text example 56" samples.dat  
  1577. echo ########  .
  1578. echo ########  .
  1579. pause
  1580.  
  1581.        echo FINISH_DATE-: TBD > zzapfile
  1582.        dg -al tasks.sam > taskplus.tem
  1583.        type taskplus.tem | more
  1584. echo ########  ====================================================
  1585. echo ########  The resulting taskplus.tem file has been typed
  1586. echo ########  to the screen through the more program.
  1587. echo ########  .
  1588. echo ########  The new file is now ready for you to edit the
  1589. echo ########  TBD data lines.
  1590. echo ########  ====================================================
  1591.  
  1592. pause
  1593. *
  1594. text example 57
  1595.    +------------------------------------------------------------------------+
  1596.    |                                                                        |
  1597.    | If, in the former example, if you wanted to append ONLY to specific    |
  1598.    | records, perhaps with a specific date, use the -j option to limit the  |
  1599.    | appending action to "hits" only.                                       |
  1600.    |                                                                        |
  1601.    | For example:                                                           |
  1602.    |                                                                        |
  1603.    |        echo FINISH_DATE-: 961210  > zzapfile                           |
  1604.    | and                                                                    |
  1605.    |        dg -a  "PRIORITY----: 1" tasks.sam > taskplus.tem               |
  1606.    |                                                                        |
  1607.    | The -a option alone indicates that we want all records printed (even   |
  1608.    | with no -l, so that we have an entire updated file) BUT the presence   |
  1609.    | of a searchterm limits the appending action to hits on the searchterm  |
  1610.    | given.                                                                 |
  1611.    |                                                                        |
  1612.    | We'll pipe the result through "more" so you can see that only the      |
  1613.    | "hit" record (there happens to be only one hit) has been appended.     |
  1614.    |                                                                        |
  1615.    +------------------------------------------------------------------------+
  1616. *
  1617. rem do example 57
  1618. cls
  1619. dg -ekp "text example 57" samples.dat  
  1620. echo ########  .
  1621. echo ########  .
  1622. pause
  1623.  
  1624.        echo FINISH_DATE-: 961210  > zzapfile
  1625.        dg -a "PRIORITY----: 1" tasks.sam > taskplus.tem
  1626.        type taskplus.tem | more
  1627. echo ########  ====================================================
  1628. echo ########  The resulting taskplus.tem file has been typed
  1629. echo ########  to the screen. Only one record was appended.
  1630. echo ########  .
  1631. echo ########  The new file could now be further appended for
  1632. echo ########  other search terms and append data.
  1633. echo ########  ====================================================
  1634.  
  1635. pause
  1636. *
  1637. text example 58
  1638.    +------------------------------------------------------------------------+
  1639.    | In the two previous examples, the -a option printed all records. This  |
  1640.    | usage is appropriate when just creating updates to a master file. The  |
  1641.    | result can then be copied to replace the master.                       |
  1642.    |                                                                        |
  1643.    | If we wanted only an EXTRACT holding the hit records, with the append  |
  1644.    | action done, use -j to modify the behavior of the -a option:           |
  1645.    |                                                                        |
  1646.    |        dg -aj  "PRIORITY----: 1" tasks.sam > taskplus.tem              |
  1647.    |                                                                        |
  1648.    | The -a option with a -j modifier, indicates that we want ONLY          |
  1649.    | the records with hits to be printed.                                   |
  1650.    |                                                                        |
  1651.    +------------------------------------------------------------------------+
  1652. *
  1653. rem do example 58
  1654. cls
  1655. dg -ekp "text example 58" samples.dat  
  1656. echo ########  .
  1657. echo ########  .
  1658. pause
  1659.  
  1660.        echo FINISH_DATE-: 961210  > zzapfile
  1661.        dg -aj "PRIORITY----: 1" tasks.sam > taskplus.tem
  1662.        type taskplus.tem
  1663. echo ########  ====================================================
  1664. echo ########  The resulting taskplus.tem file has only the hit.
  1665. echo ########  The file has been typed to the screen.
  1666. echo ########  ====================================================
  1667.  
  1668. pause
  1669. *
  1670. text example 59
  1671.    +------------------------------------------------------------------------+
  1672.    |                                                                        |
  1673.    | A different kind of appending can be done with the -A option.          |
  1674.    |                                                                        |
  1675.    | This option appends line 1 of "zzapfile" to the first keyline          |
  1676.    | of a record.                                                           |
  1677.    |                                                                        |
  1678.    | For example, we may decide that all our tasks.sam keylines need a tag  |
  1679.    | such as "OST" so that we can mix the tasks.sam records with some       |
  1680.    | other records, yet be able to retrieve these independently.            |
  1681.    |                                                                        |
  1682.    | As before, create zzapfile:                                            |
  1683.    |                                                                        |
  1684.    |        echo OST  > zzapfile                                            |
  1685.    |                                                                        |
  1686.    | Then use:                                                              |
  1687.    |                                                                        |
  1688.    |        dg -Al tasks.sam > taskplus.tem                                 |
  1689.    |                                                                        |
  1690.    +------------------------------------------------------------------------+
  1691. *
  1692. rem do example 59
  1693. cls
  1694. dg -ekp "text example 59" samples.dat  
  1695. echo ########  .
  1696. echo ########  .
  1697. pause
  1698.  
  1699.        echo OST  > zzapfile
  1700.        dg -Al tasks.sam > taskplus.tem
  1701.        type taskplus.tem
  1702. echo ########  ====================================================
  1703. echo ########  The resulting taskplus.tem file now has the
  1704. echo ########  desired identifier in all keylines.
  1705. echo ########  .
  1706. echo ########  You may also use the -j option to limit this
  1707. echo ########  kind of append action to hits only.
  1708. echo ########  ====================================================
  1709.  
  1710. pause
  1711. *
  1712. text example 60
  1713.    +------------------------------------------------------------------------+
  1714.    | You may use the (uppercase!)  -J option with the -a or -A options to   |
  1715.    | tack on the record number of each record.  Use -aJ to add the record   |
  1716.    | number as a final line in the record, or -AJ to tack the record        |
  1717.    | number onto the keyline. The contents of zzapfile, if any, will come   |
  1718.    | in first.  If only line numbers are wanted, zzapfile must still        |
  1719.    | exist, but may be null.                                                |
  1720.    |                                                                        |
  1721.    | We'll demo the -AJ case here.  First, we'll create a null (EMPTY)      |
  1722.    | zzapfile (UNIX, use: rm zzapfile, then touch zzapfile)                 |
  1723.    |                                                                        |
  1724.    |        @REM >zzapfile                                                  |
  1725.    |                                                                        |
  1726.    | Then make the call:                                                    |
  1727.    |                                                                        |
  1728.    |        dg -AJl  tasks.sam > taskplus.tem                               |
  1729.    |                                                                        |
  1730.    | We'll use "more" this time to allow you to inspect each keyline.       |
  1731.    |                                                                        |
  1732.    +------------------------------------------------------------------------+
  1733. *
  1734. rem do example 60
  1735. cls
  1736. dg -ekp "text example 60" samples.dat  
  1737. echo ########  .
  1738. echo ########  .
  1739. pause
  1740.        @REM >zzapfile
  1741.        rem @echo off
  1742.        rem above is a dos-based touch command
  1743.        dg -AJl  tasks.sam > taskplus.tem
  1744.        type taskplus.tem  | more
  1745. echo ########  ====================================================
  1746. echo ########  Note the record numbers appended to the keylines.
  1747. echo ########  .
  1748. echo ########  With a -aJl option, the record numbers would have
  1749. echo ########  been appended after the last line of each record.
  1750. echo ########  ====================================================
  1751.  
  1752. pause
  1753. if %1 == dem5 goto end
  1754. *
  1755. text example 61
  1756.    +------------------------------------------------------------------------+
  1757.    |                                                                        |
  1758.    |       +----------------------------------------+                       |
  1759.    |       | DG DEMO PART 6 --  ADVANCED USERS ONLY |                       |
  1760.    |       +----------------------------------------+                       |
  1761.    |                                                                        |
  1762.    |         --  Records with labeled lines                                 |
  1763.    |         ----  Finding Extra (dupe) labeled lines        (-E)           |
  1764.    |         ----  Automating data updates                   (-B)           |
  1765.    |                                                                        |
  1766.    |                                                                        |
  1767.    +------------------------------------------------------------------------+
  1768. *
  1769. rem do example 61
  1770. :dem6
  1771. @echo off
  1772. cls
  1773. dg -ekp "text example 61" samples.dat  
  1774. pause
  1775. *
  1776. text example 62
  1777.    +------------------------------------------------------------------------+
  1778.    |                                                                        |
  1779.    | emps.sam is a sample flat file of employees, their language skills,    |
  1780.    | and some simulated personnel data.  It's in a partial labeled-line     |
  1781.    | form. Here's an example record:                                        |
  1782.    |                                                                        |
  1783.    |                ann marie smith                                         |
  1784.    |                english french chinese                                  |
  1785.    |                ssn: 666-666-666                                        |
  1786.    |                salary: 666666                                          |
  1787.    |                hired: 960606                                           |
  1788.    |                manager: brian adams                                    |
  1789.    |                *                                                       |
  1790.    |                etc.                                                    |
  1791.    |                                                                        |
  1792.    +------------------------------------------------------------------------+
  1793. *
  1794. rem do example 62
  1795. cls
  1796. dg -ekp "text example 62" samples.dat | more
  1797. pause
  1798. *
  1799. text example 63
  1800.    +------------------------------------------------------------------------+
  1801.    |                                                                        |
  1802.    | We'll use this emps.samp file to demonstrate the -E "Extra" option.    |
  1803.    | An option of -E5 means:  report records that have the search term on   |
  1804.    | 5 or more lines.  It's like an -M5 option, but an -M5 option is        |
  1805.    | intended for use with 5 different terms, not to look for 5 instances   |
  1806.    | of the same term.                                                      |
  1807.    |                                                                        |
  1808.    | To see whether any of our records had more than one use of a line      |
  1809.    | with the term "ssn:" we search with:                                   |
  1810.    |                                                                        |
  1811.    |                dg -E ssn: emps.sam                                     |
  1812.    |                                                                        |
  1813.    | The -E option without a numeric defaults to -E2.                       |
  1814.    |                                                                        |
  1815.    +------------------------------------------------------------------------+
  1816. *
  1817. rem do example 63
  1818. cls
  1819. dg -ekp "text example 63" samples.dat | more
  1820. pause
  1821.  
  1822.        cls
  1823.        dg -E ssn emps.sam
  1824. echo ########  ====================================================
  1825. echo ########  The ringer case in the records has been found.
  1826. echo ########  This search capability has proven more useful than
  1827. echo ########  it looks in a number of cases when file records
  1828. echo ########  were being inspected.
  1829. echo ########  .
  1830. echo ########  The use of -E is not limited to labeled-line files.
  1831. echo ########  ====================================================
  1832. pause
  1833. *
  1834. text example 64
  1835.    +------------------------------------------------------------------------+
  1836.    |                                                                        |
  1837.    | Now lets use the emps.sam file to demonstrate the -B option.           |
  1838.    |                                                                        |
  1839.    | WARNING: Most users should skip the rest of this demo and never        |
  1840.    | use the -B option. This is a complicated option and of value           |
  1841.    | only rarely.                                                           |
  1842.    |                                                                        |
  1843.    | Normally a simple text editor or awk is the way to go when updating    |
  1844.    | simple flat files.  But there are cases when the changes or updates    |
  1845.    | wanted can be more easily generated in a batch file, and integrated    |
  1846.    | using dg.                                                              |
  1847.    |                                                                        |
  1848.    | This option offers a primitive way to update certain kinds of data     |
  1849.    | files.  emps.sam has a one-labeled-field-per-line structure, and that  |
  1850.    | is the only structure supported by the -B option:                      |
  1851.    |                                                                        |
  1852.    +------------------------------------------------------------------------+
  1853. *
  1854. rem do example 64
  1855. cls
  1856. dg -ekp "text example 64" samples.dat | more
  1857. pause
  1858. *
  1859. text example 65
  1860.    +------------------------------------------------------------------------+
  1861.    |                                                                        |
  1862.    | A sample update file has been prepared, for emps.sam, named            |
  1863.    | empupdat.sam:                                                          |
  1864.    |                                                                        |
  1865.    |                bill kelly ~salary: 111111                              |
  1866.    |                bill kelly ~ssn: 111-111-1111                           |
  1867.    |                pete ~salary: 111111                                    |
  1868.    |                chinese ~manager: Aaron Aaronson                        |
  1869.    |                                                                        |
  1870.    | The update file is intended to update 2 fields for "bill kelly", one   |
  1871.    | field for  "pete" and the "manager" field for all employees with       |
  1872.    | "chinese" as a listed skill.  The update file uses 111 and Aa          |
  1873.    | patterns to help you see just where the changes took place when the    |
  1874.    | demo runs. To make an updated file from emps.sam :                     |
  1875.    |                                                                        |
  1876.    |        dg -k2B  empupdat.sam emps.sam > emps.tem                       |
  1877.    |                                                                        |
  1878.    | (See the documentation for an understanding of how the -k option must  |
  1879.    | always be used with the -B option.)                                    |
  1880.    +------------------------------------------------------------------------+
  1881. *
  1882. rem do example 65
  1883. cls
  1884. dg -ekp "text example 65" samples.dat | more
  1885. pause
  1886.  
  1887.        cls
  1888.        dg -k2B  empupdat.sam emps.sam > emps.tem
  1889. echo ########  ====================================================
  1890. echo ########  The result is in file emps.tem
  1891. echo ########  which will now be typed to the screen.
  1892. echo ########  .
  1893. echo ########  Note the 111 mods for bill kelly
  1894. echo ########  and the manager mods for those with chinese skills.
  1895.        pause
  1896.        type emps.tem | more
  1897. echo ########  ====================================================
  1898. echo ########  Note that pete's salary was appended to his
  1899. echo ########  record, since it originally had no salary field.
  1900. echo ########  ====================================================
  1901. echo ########  See the manual for more details about the -B option.
  1902. echo ########  ====================================================
  1903. pause
  1904. if %1 == dem6 goto end
  1905. if %1 == all  goto end
  1906. *
  1907. rem do example 65
  1908. rem not really an example, but the repeated searchterm is needed.
  1909. :hlp
  1910. echo ########  Need valid arguments. Use one of the following:
  1911. echo ########  go all ...not recommended
  1912. echo ########  go dem1
  1913. echo ########  go dem2
  1914. echo ########  go dem3
  1915. echo ########  go dem4
  1916. echo ########  go dem5
  1917. echo ########  go dem6
  1918. echo ########  For section overviews, use:
  1919. echo ########  go list
  1920. goto finished
  1921. :list
  1922. dg "DEMO PART" samples.dat > ztem
  1923. dg -v finished ztem | more
  1924. del ztem
  1925. goto finished
  1926.  
  1927. :end
  1928. echo ########  You have completed the dg examples review, %1
  1929. :finished
  1930. *
  1931.